SURF

SURF (Speeded Up Robust Feature) is a robust image detector & descriptor, first presented by Herbert Bay et al. in 2006, that can be used in computer vision tasks like object recognition or 3D reconstruction. It is partly inspired by the SIFT descriptor. The standard version of SURF is several times faster than SIFT and claimed by its authors to be more robust against different image transformations than SIFT. SURF is based on sums of 2D Haar wavelet responses and makes an efficient use of integral images.

It uses an integer approximation to the determinant of Hessian blob detector, which can be computed extremely quickly with an integral image (3 integer operations). For features, it uses the sum of the Haar wavelet response around the point of interest. Again, these can be computed with the aid of the integral image.

An application of the algorithm is patented in the US.[1]

Contents

Implementations

Name Language Open
Source
Description
Original C++ No Original implementation
OpenSURF C++, C# Yes Implementation with detailed documentation and reference paper.
OpenSurfCL C++ Yes Free implementation of OpenSURF on OpenCL. Wrappers for C# and Java.
OpenCV SURF C++ Yes Implementation of SURF feature extraction (OpenCV 2.0)
SURFmex Matlab Matlab Interface (MEX) to OpenCV's SURF code.
OpenSURF Matlab Matlab Yes Interface to OpenSURF for Matlab
libmv SURF C++ Yes Implementation of extraction and matching.
Python mahotas Python computer vision package which includes an implementation of SURF.
Dlib C++ Library C++ Yes Implementation of SURF feature extraction.
Pan-o-matic C++ Yes Software which includes an implementation of the SURF algorithm.
Parallel SURF C++ Yes Multi-threaded implementation based on Pan-o-matic.
ProcessorSURF C# Yes C# SURF plugin for Multi-Agent Serving System
JavaSurf Java Yes Java implementation of SURF
JOpenSURF Java Yes Java translation of OpenSURF
ImageJ SURF Java Yes SURF implementation as ImageJ plugin with a convenient GUI and output of statistics
BoofCV Java Yes Java computer vision library which includes SURF.
Speeded Up SURF Yes GPU Implementation
CUDA SURF C++ CUDA Yes GPU implementation using CUDA
Mathematica Mathematica No Mathematic implementation
GPU SURF No GPU Implementation
FPGA SURF Yes FPGA Implementation
clsurf C++ High performance cross platform OpenCL implementation of SURF with nearest neighbors matching
IPOL C++ Yes An implementation of SURF based on the original article with detailed explanations

Comparative Studies of Implementations

See also

References

  1. ^ US 2009238460, Ryuji Funayama, Hiromichi Yanagihara, Luc Van Gool, Tinne Tuytelaars, Herbert Bay, "ROBUST INTEREST POINT DETECTOR AND DESCRIPTOR", published 2009-09-24 

External links